<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Heure Unix</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Heure_Unix"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Heure_Unix rootpage-Heure_Unix skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Heure Unix</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><div style="text-align:center;border:1px solid #dbdbdb;border-radius:4px;padding:5px;width:220px;margin-left:4em;float:right;"><b>L'heure Unix courante</b><br>1761958779 (rafraîchir)<br>(<a href="ISO_8601" title="ISO 8601">ISO 8601</a>: 2025-11-01T00:59:39Z)</div>
<p>L'<b>heure Unix</b> ou <b>heure Posix</b> est une mesure du <a href="Temps" title="Temps">temps</a> fondée sur le nombre de secondes écoulées depuis le <time class="nowrap" datetime="1970-01-01" data-sort-value="1970-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 1970</time> 00:00:00 <a href="Temps_universel_coordonn%C3%A9" title="Temps universel coordonné">UTC</a>, hors <a href="Seconde_intercalaire" title="Seconde intercalaire">secondes intercalaires</a>. Elle est utilisée principalement dans les systèmes qui respectent la norme <a href="POSIX" title="POSIX">POSIX</a><sup id="cite_ref-marque_1-0" class="reference"><a href="#cite_note-marque-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>, dont les systèmes de <a href="Type_Unix" title="Type Unix">type Unix</a>, d'où son nom. C'est la représentation POSIX du temps.
</p><p>NB: <i>cette date du « <time class="nowrap" datetime="1970-01-01" data-sort-value="1970-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 1970</time> 00:00:00 <a href="Temps_universel_coordonn%C3%A9" title="Temps universel coordonné">UTC</a> » est appelée « époque Unix »</i>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Prologue">Prologue</h2></div>
<p>La fin de phrase « ..., hors <a href="Seconde_intercalaire" title="Seconde intercalaire">secondes intercalaires</a> » dans la définition ci-dessus signifie que l'heure Unix ou heure Posix n'est <b>pas égale</b> à la durée exacte en secondes qui s'est écoulée depuis l'« époque Unix »<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. Pas plus d'ailleurs que la date et heure UTC ne permettent non plus de calculer cette durée exacte.
</p><p>Dans les deux cas, pour obtenir le décompte exact des secondes qui se sont écoulées depuis l'« <a href="Epoch" title="Epoch">epoch</a> Unix », il faut se procurer une table des secondes intercalaires<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>, et il faut ajouter à l'heure Posix la somme arithmétique des secondes intercalaires qui ont été insérées, ou bien retranchées, depuis cette « <a href="Epoch" title="Epoch">epoch</a> Unix ».
</p>
<ul><li>Pour l'heure UTC, cet écart est accepté car l'heure UTC est irrégulière par construction. Elle est asservie à la rotation de la Terre sur elle-même, qui elle-même est irrégulière. Depuis des millénaires, les habitudes de vie des hommes et des femmes sont rythmées, de façon universelle, par les cycles de rotation de la Terre sur elle-même. L'heure UTC est un outil créé pour, en quelques sortes, nous aider à rester synchronisés sur cette rotation.</li></ul>
<ul><li>Par contre, s'agissant de l'<b>heure Unix</b> ou <b>heure Posix</b>, c'est-à-dire un compteur de nombre de secondes écoulées depuis l'« époque Unix », il est dérangeant que ce décompte puisse être inexact. Cette convention de mesure du temps est dérangeante. Les paragraphes suivants de cet article donnent des éléments pour montrer comment s'en accommoder.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Heure_POSIX">Heure POSIX</h2></div>
<div class="thumb tright"><div class="thumbinner" style="width:302px;">
<div class="thumbimage" style="width:300px;"><span typeof="mw:File"></span><span typeof="mw:File"></span></div>
<div class="thumbcaption">
Le graphe de gauche montre la différence <a href="DUT1" title="DUT1">DUT1</a> entre UT1 et UTC. Les segments verticaux correspondent à l'insertion de secondes intercalaires.<br><br>Le graphe de droite montre les différences UT1-TAI, et UTC-TAI.<br>Les marches d'escalier de la courbe UTC-TAI correspondent à l'insertion de secondes intercalaires.</div>
</div></div>
<p><br>
</p>
<div class="mw-heading mw-heading3"><h3 id="Associer_un_événement_dans_le_temps_à_un_nombre_réel"><span id="Associer_un_.C3.A9v.C3.A9nement_dans_le_temps_.C3.A0_un_nombre_r.C3.A9el"></span>Associer un événement dans le temps à un nombre réel</h3></div>
<p>Pour associer un événement à un <a href="Nombre_r%C3%A9el" title="Nombre réel">nombre réel</a>, il suffit d'utiliser des références naturelles et universelles : par exemple, les périodicités de <a href="Rotation_de_la_Terre" title="Rotation de la Terre">rotation de la Terre</a> sur elle-même, et autour du Soleil. Ces périodicités sont suffisantes pour établir des <a href="Calendrier" title="Calendrier">calendriers</a>, c'est-à-dire des relations entre des événements et des dates, même si quelques efforts sont nécessaires pour bien définir les références utilisées<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> (chaque pays a les siennes, toutes adoptées à des instants différents) ; les dates de ces calendriers ne sont que des nombres exprimés dans un <a href="Syst%C3%A8me_de_num%C3%A9ration" title="Système de numération">système de numération</a> un peu compliqué qui a pour unités le jour, la semaine, le mois, la saison, l'année, etc., et l'heure Posix n'est qu'une référence parmi d'autres exprimée sous forme d'un simple nombre.
</p>
<div class="mw-heading mw-heading4"><h4 id="Principaux_systèmes_de_mesures_utilisés"><span id="Principaux_syst.C3.A8mes_de_mesures_utilis.C3.A9s"></span>Principaux systèmes de mesures utilisés</h4></div>
<p>Voici les principaux systèmes de mesure du temps qui ont été imaginés et utilisés jusqu'à nos jours<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> :
</p>
<div class="clear" style="clear:both;"></div>
<table class="wikitable centre" style="text-align:left">
<tbody><tr>
<th scope="col">Sigle
</th>
<th scope="col">Signification
</th>
<th scope="col">Définition
</th></tr>
<tr>
<td>GMT
</td>
<td><a href="Temps_moyen_de_Greenwich" title="Temps moyen de Greenwich">Temps moyen de Greenwich</a><sup id="cite_ref-GMT_6-0" class="reference"><a href="#cite_note-GMT-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>Encore en usage dans certains pays pour des aspects légaux<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>.
<p>Néanmoins la définition de ce système de mesure est ambigüe<sup id="cite_ref-GMT_6-1" class="reference"><a href="#cite_note-GMT-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>. C'est la raison pour laquelle, en dehors de cet usage administratif, il est préférable d'utiliser UTC.
</p>
</td></tr>
<tr>
<td>UT
</td>
<td><a href="Temps_universel" title="Temps universel">Temps universel</a>
</td>
<td>Ce système définit le jour comme la durée moyenne de rotation de la Terre autour de son axe.
<p>Cette définition pose quelques difficultés car la vitesse de cette rotation n’est pas constante, elle diminue lentement sous l’effet des marées et, de plus, présente des irrégularités imprévisibles : la durée des jours UT est très légèrement supérieure, en moyenne, à 86 400 secondes (nombre de secondes dans 24h). L'écart est de l’ordre de la seconde sur une à trois années.
</p><p>On distingue plusieurs versions de UT : UT0, UT1, UT1R, UT2. On se reportera à l'article « <a href="Temps_universel" title="Temps universel">Temps universel</a> » pour plus de détails.
</p>
</td></tr>
<tr>
<td>TAI
</td>
<td><a href="Temps_atomique_international" title="Temps atomique international">Temps atomique international</a>
</td>
<td>Ce système est fondé sur une définition internationale de la seconde. Son étalon est constitué par plusieurs <a href="Horloge_atomique" title="Horloge atomique">horloges atomiques</a> réparties dans le monde. La mesure du temps dans ce système est strictement régulière à la différence de la précédente pour qui son étalon n'a pas la même régularité. En conséquence, TAI et UT s'éloignent progressivement l'un de l'autre du fait du ralentissement du second; c'est ce que montre la figure ci-dessus.
<ul><li>Une différence de deux TAI permet de calculer un délai écoulé de façon exacte.</li></ul>
</td></tr>
<tr>
<td>UTC
</td>
<td><a href="Temps_universel_coordonn%C3%A9" title="Temps universel coordonné">Temps universel coordonné</a>
</td>
<td>
<p>Ce système est adopté comme base du temps civil international par un grand nombre de pays. Le mot « coordonné » indique que :
</p>
<ul><li>la différence entre UTC et TAI est un nombre entier de secondes,</li>
<li>la différence entre UTC et UT1 n'est jamais plus grande que 0,9 seconde.</li></ul>
<p>Autrement dit, UTC est identique au TAI (il en a la stabilité et l’exactitude) à un nombre entier de secondes près<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>, et les <a href="Seconde_intercalaire" title="Seconde intercalaire">secondes intercalaires</a> lui permettent de coller à UT à 0,9 <abbr class="abbr" title="seconde">s</abbr> près ; c'est ce que montre la figure ci-dessus<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.
</p>
<ul><li>Le respect de cet écart maximal entre UT et UTC est garanti par le <a href="Service_international_de_la_rotation_terrestre_et_des_syst%C3%A8mes_de_r%C3%A9f%C3%A9rence" title="Service international de la rotation terrestre et des systèmes de référence">Service international de la rotation terrestre et des systèmes de référence</a> (IERS), fondé en particulier à l’<a href="Observatoire_de_Paris" title="Observatoire de Paris">Observatoire de Paris</a>, qui décide<sup id="cite_ref-ajout_suppression_10-0" class="reference"><a href="#cite_note-ajout_suppression-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> de rajouter (ou supprimer) des secondes intercalaires chaque fois qu'UTC et UT s’écartent trop l’un de l’autre.</li>
<li>Une différence de deux heures UTC permet de calculer un délai écoulé de façon exacte tant que les deux événements ne sont pas à cheval sur une seconde intercalaire (voir ci-dessous la probabilité et l'amplitude de l'erreur). Pour calculer un délai exact à la seconde près en toutes circonstances, il faut tenir compte des secondes intercalaires<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.</li></ul>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Choix_d'une_origine_du_temps"><span id="Choix_d.27une_origine_du_temps"></span>Choix d'une origine du temps</h4></div>
<p>Pour mesurer le temps, il faut choisir une origine :
</p>
<ul><li>L'origine de l'heure POSIX a été choisie comme étant le <time class="nowrap" datetime="1970-01-01" data-sort-value="1970-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 1970</time> 00:00:00 UTC<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>, cette date correspond à l'heure 0 de Posix, elle est appelée l'<i><a href="Epoch" title="Epoch">epoch</a></i> Posix (et également epoch Unix).</li></ul>
<ul><li>L'origine du TAI a été définie telle que UT1-TAI soit égal à 0 le premier janvier 1958, voir réf <a rel="nofollow" class="external autonumber" href="https://hpiers.obspm.fr/eop-pc/earthor/utc/UTC_fr.html">[2]</a>.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Évolution_du_temps"><span id=".C3.89volution_du_temps"></span>Évolution du temps</h4></div>
<p>Il faut indiquer comment évolue ce nombre en fonction du temps qui passe :
</p>
<ul><li>Pour chaque seconde écoulée, l'heure POSIX s'accroît d'exactement une unité et ce de façon invariable tout au long de l'année, sauf lorsque l'IERS décide<sup id="cite_ref-ajout_suppression_10-1" class="reference"><a href="#cite_note-ajout_suppression-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> d'ajouter (ou de supprimer) une seconde intercalaire ;</li>
<li>Pour chaque seconde écoulée, l'heure TAI s'accroît d'exactement une unité, ad vitam æternam.</li></ul>
<p>Le tableau ci-dessous illustre le cas de l'ajout de la seconde intercalaire qui a eu lieu le <time class="nowrap" datetime="2008-12-31" data-sort-value="2008-12-31">31 décembre 2008</time> à minuit<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="clear" style="clear:both;"></div>
<table class="wikitable centre" width="800" style="text-align:left">
<caption align="bottom"><b>Tableau 1 :</b> L'heure Posix au passage de minuit lorsqu'une seconde intercalaire fut ajoutée le <time class="nowrap" datetime="2008-12-31" data-sort-value="2008-12-31">31 décembre 2008</time> à minuit
</caption>
<tbody><tr>
<th>#
</th>
<th scope="col">TAI
</th>
<th scope="col">UTC
</th>
<th scope="col">TAI - UTC
</th>
<th scope="col">Heure Posix
</th>
<th>
</th></tr>
<tr>
<td align="right">1
</td>
<td align="right">1 230 768 030
</td>
<td>2008-12-31T23:59:57
</td>
<td align="right">33
</td>
<td align="right">1 230 767 997
</td>
<td>
</td></tr>
<tr>
<td align="right">2
</td>
<td align="right">1 230 768 031
</td>
<td>2008-12-31T23:59:58
</td>
<td align="right">33
</td>
<td align="right">1 230 767 998
</td>
<td>
</td></tr>
<tr>
<td align="right">3
</td>
<td align="right">1 230 768 032
</td>
<td>2008-12-31T23:59:59
</td>
<td align="right">33
</td>
<td align="right">1 230 767 999
</td>
<td>
</td></tr>
<tr bgcolor="#C0C0C0">
<td align="right">4
</td>
<td align="right"><b>1 230 768 033</b>
</td>
<td><b>2008-12-31T23:59:60</b>
</td>
<td align="right">33
</td>
<td align="right"><b>1 230 768 000</b>
</td>
<td>ajout d'une seconde intercalaire<sup id="cite_ref-NTP_14-0" class="reference"><a href="#cite_note-NTP-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</td></tr>
<tr bgcolor="#C0C0C0">
<td align="right">5
</td>
<td align="right"><b>1 230 768 034</b>
</td>
<td><b>2009-01-01T00:00:00</b>
</td>
<td align="right"><b>34</b>
</td>
<td align="right"><b>1 230 768 000</b>
</td>
<td>
</td></tr>
<tr>
<td align="right">6
</td>
<td align="right">1 230 768 035
</td>
<td>2009-01-01T00:00:01
</td>
<td align="right"><b>34</b>
</td>
<td align="right">1 230 768 001
</td>
<td>
</td></tr>
<tr>
<td align="right">7
</td>
<td align="right">1 230 768 036
</td>
<td>2009-01-01T00:00:02
</td>
<td align="right"><b>34</b>
</td>
<td align="right">1 230 768 002
</td>
<td>
</td></tr></tbody></table>
<p>L'Heure Posix n'est pas une représentation linéaire du temps, il y a des anomalies<sup id="cite_ref-NTP_14-1" class="reference"><a href="#cite_note-NTP-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>, comme la ligne 5 du tableau ci-dessus.
</p><p>Il n'y a pas correspondance <a href="Bijection" title="Bijection">bijective</a> entre l'heure UTC et l'heure Posix ; ce dernier ne permet pas de représenter les secondes intercalaires présentes dans UTC, comme la ligne 4 du tableau ci-dessus : 2008-12-31T23:59:<b>60</b> UTC.
</p>
<div class="mw-heading mw-heading3"><h3 id="Temps_écoulé_entre_deux_événements"><span id="Temps_.C3.A9coul.C3.A9_entre_deux_.C3.A9v.C3.A9nements"></span>Temps écoulé entre deux événements</h3></div>
<p>Il ne faut pas mélanger ces différentes références (par exemple, l'an zéro d'un calendrier ne commence pas au même instant que celui d'un autre) et également parce que tous ces calendriers ont besoin de s'adapter aux périodicités non multiples les unes des autres, par exemple les années bissextiles, ou bien les irrégularités de ces périodicités. Ces adaptations compliquent un petit peu les calculs, en fonction de la précision que l'on recherche ; par exemple, <i>il s'est écoulé un an</i> peut être une information suffisante ou bien il faudra tenir compte du caractère bissextile de l'année pour répondre à la même question exprimée en nombre de jours. Cela veut dire qu'il faut conserver une mémoire du passé, la mémoire de chaque seconde qui passe.
</p><p>Dans la plupart des cas, une simple différence des heures Posix suffit, sauf si les deux événements sont à cheval sur une ou plusieurs secondes intercalaires. Pour calculer un délai exact en toutes circonstances, il faut tenir compte des secondes intercalaires.
</p><p>Toutefois, l'occurrence des secondes intercalaires étant faible<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>, la probabilité de commettre une telle erreur est donc faible ; et si malgré tout le cas se produit, alors l'amplitude de l'erreur est peut-être faible<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>, et il n'y a dans ce cas pas besoin de se préoccuper de ces secondes intercalaires ; le tableau ci-dessous montre différents exemples.
</p><p>La méthode pour compléter une ligne de ce tableau est la suivante :
</p>
<ul><li>si le délai calculé entre les deux événements d'intérêt est de l'ordre de M secondes, alors la probabilité qu'une seconde intercalaire soit dans cet intervalle est de M sur le nombre total N de secondes pendant une année (c'est-à-dire en prenant pour hypothèse qu'une seconde intercalaire est ajoutée chaque année),</li>
<li>une année compte N = 365 x 24 x 3 600 = 31 536 000 secondes,</li>
<li>la probabilité de commettre une erreur 1/M est donc de M/N = Mx3,2 × 10<sup>-8</sup>.</li></ul>
<p>L'application de cette méthode pour des délais M=10, 100, 1000 donne le tableau suivant :
</p>
<table class="wikitable centre" style="text-align:right">
<caption align="bottom"><b>Tableau 2 :</b> Erreur commise et probabilité de commettre l'erreur
</caption>
<tbody><tr>
<th scope="col">Délai à mesurer (M)
</th>
<th scope="col">Probabilité d'erreur
</th>
<th scope="col">Amplitude de l'erreur
</th></tr>
<tr>
<td>10 <abbr class="abbr" title="seconde">s</abbr></td>
<td>3,2 × 10<sup>-7</sup></td>
<td>10 %
</td></tr>
<tr>
<td>100 <abbr class="abbr" title="seconde">s</abbr></td>
<td>3,2 × 10<sup>-6</sup></td>
<td>1 %
</td></tr>
<tr>
<td>1 000 <abbr class="abbr" title="seconde">s</abbr></td>
<td>3,2 × 10<sup>-5</sup></td>
<td>0,1 %
</td></tr></tbody></table>
<p>À la limite, si le délai à calculer entre les deux événements d'intérêt est d'un an, alors la probabilité est de 100 % de commettre une erreur de 3,2 × 10<sup>-8</sup>.
</p><p>La probabilité de commettre une erreur donnée et l'amplitude de cette erreur varie inversement l'une de l'autre ; une autre façon de présenter les choses pourrait être de dire :
</p>
<ul><li>si le délai calculé est petit, alors l'erreur peut être forte, mais la probabilité de la commettre est faible,</li>
<li>si le délai calculé est grand, alors la probabilité de commettre l'erreur est forte, mais l'erreur est faible.</li></ul>
<p>Si ce couple (probabilité de commettre une erreur / amplitude de l'erreur) est inacceptable, ou bien si on ne sait pas en évaluer l'impact, alors il est sûrement nécessaire de se poser la question de savoir pourquoi on utilise UTC et quel est le besoin de précision nécessaire, ou bien de prévoir l'usage de tables à mettre à jour dès que l'insertion/retrait d'une <a href="Seconde_intercalaire" title="Seconde intercalaire">seconde intercalaire</a> est programmé<sup id="cite_ref-ajout_suppression_10-2" class="reference"><a href="#cite_note-ajout_suppression-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Conversion_de_l'heure_UTC_en_heure_Posix"><span id="Conversion_de_l.27heure_UTC_en_heure_Posix"></span>Conversion de l'heure UTC en heure Posix</h4></div>
<p>Hormis les très rares anomalies mentionnées précédemment à propos des secondes intercalaires, il est aisé de convertir une heure UTC en une heure Posix et inversement.
</p><p>Exemple : Quelle est l'heure Posix en tout début de la journée du <time class="nowrap" datetime="2009-01-01" data-sort-value="2009-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 2009</time> (ligne 5 du <i>tableau 1</i> ci-dessus) :
</p>
<ul><li>de l'époque Posix au <time class="nowrap" datetime="2009-01-01" data-sort-value="2009-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 2009</time>, 39 années se sont écoulées dont 10 bissextiles<sup id="cite_ref-année_2000_18-0" class="reference"><a href="#cite_note-année_2000-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> (voir tableau d’aide ci-dessous),</li>
<li>soit 14 245 jours de 24x3 600=86 400 secondes chacun,</li>
<li>soit 1 230 768 000 secondes écoulées depuis l'époque Unix, hors secondes intercalaires. C'est l'heure Posix.</li></ul>
<table class="wikitable centre" width="80%" style="text-align:right">
<caption align="bottom"><b>Tableau 3 :</b> Calcul du nombre de secondes écoulées (hors secondes intercalaires)<br>entre <time class="nowrap" datetime="1970-01-01" data-sort-value="1970-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 1970</time> et <time class="nowrap" datetime="2009-01-01" data-sort-value="2009-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 2009</time>, c'est l'heure Posix au <time class="nowrap" datetime="2009-01-01" data-sort-value="2009-01-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> janvier 2009</time>
</caption>
<tbody><tr>
<th scope="col" colspan="4">
</th>
<th scope="col">Nombre de jours écoulés
</th>
<th scope="col">Nombre de secondes écoulées<br>(hors secondes intercalaires)
</th></tr>
<tr>
<td>1 970</td>
<td>1 971</td>
<td bgcolor="#C0C0C0" align="left">1 972</td>
<td>1 973</td>
<td>3 x 365 + 366 = 1 461</td>
<td>1 461 x 86 400 = 126 230 400
</td></tr>
<tr>
<td>1 974</td>
<td>1 975</td>
<td bgcolor="#C0C0C0" align="left">1 976</td>
<td>1 977</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 978</td>
<td>1 979</td>
<td bgcolor="#C0C0C0" align="left">1 980</td>
<td>1 981</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 982</td>
<td>1 983</td>
<td bgcolor="#C0C0C0" align="left">1 984</td>
<td>1 985</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 986</td>
<td>1 987</td>
<td bgcolor="#C0C0C0" align="left">1 988</td>
<td>1 989</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 990</td>
<td>1 991</td>
<td bgcolor="#C0C0C0" align="left">1 992</td>
<td>1 993</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 994</td>
<td>1 995</td>
<td bgcolor="#C0C0C0" align="left">1 996</td>
<td>1 997</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>1 998</td>
<td>1 999</td>
<td bgcolor="#C0C0C0" align="left">2 000<sup id="cite_ref-année_2000_18-1" class="reference"><a href="#cite_note-année_2000-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup></td>
<td>2 001</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>2 002</td>
<td>2 003</td>
<td bgcolor="#C0C0C0" align="left">2 004</td>
<td>2 005</td>
<td>1 461</td>
<td>126 230 400
</td></tr>
<tr>
<td>2 006</td>
<td>2 007</td>
<td bgcolor="#C0C0C0" align="left">2 008</td>
<td></td>
<td>2 x 365 + 366 = 1 096</td>
<td>94 694 400
</td></tr>
<tr>
<td colspan="4"><b>Total</b></td>
<td><b>14 245</b></td>
<td>heure Posix au 1er janvier 2009<br>
<p>14 245 x 86 400 = <b>1 230 768 000</b> secondes
</p>
</td></tr></tbody></table>
<p>Il existe des outils<sup id="cite_ref-outils_19-0" class="reference"><a href="#cite_note-outils-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> qui réalisent ces calculs très simplement, comme ce « shell script » pour convertir une date en un nombre de secondes depuis l'époque Posix :
</p>
<pre> #!/bin/sh
# convertir une date (attention au format de l'argument)
# en nombre de secondes depuis l'époque Posix
#
# exemple: date --date "2009-01-01 00:00:00+00:00" "+heure POSIX = %s secondes"
#
# affiche: heure POSIX = 1230768000 secondes
#
date --date "$*" "+%s secondes"
</pre>
<div class="mw-heading mw-heading4"><h4 id="Conversion_d'une_heure_Posix_en_heure_UTC"><span id="Conversion_d.27une_heure_Posix_en_heure_UTC"></span>Conversion d'une heure Posix en heure UTC</h4></div>
<p>Le calcul inverse ne présente pas de difficulté, et de la même façon, il existe des outils<sup id="cite_ref-outils_19-1" class="reference"><a href="#cite_note-outils-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> qui réalisent ces calculs très simplement, comme ce « shell script » pour convertir un nombre de secondes depuis l'époque Posix en une date :
</p>
<pre> #!/bin/sh
# convertir un nombre de secondes depuis l'époque Posix
# en date
#
# exemple: date -u --iso-8601=seconds --date "1970-01-01 1230768000 seconds"
#
# affiche: 2009-01-01T00:00:00+00:00
#
date -u -R --date "1970-01-01 $* seconds"
</pre>
<div class="mw-heading mw-heading2"><h2 id="Heure_UNIX">Heure UNIX</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Nombre_limité_d'années_qu'un_système_UNIX_particulier_peut_représenter"><span id="Nombre_limit.C3.A9_d.27ann.C3.A9es_qu.27un_syst.C3.A8me_UNIX_particulier_peut_repr.C3.A9senter"></span>Nombre limité d'années qu'un système UNIX particulier peut représenter</h3></div>
<p>La méthode plus courante pour lire l'heure sous Unix, est l'appel à la fonction suivante qui retourne une valeur numérique de type "<code>time_t</code>".
</p>
<pre> time_t time(NULL);</pre>
<p>Ce type <i>time_t</i> est couramment utilisé pour manipuler l'heure UNIX, malheureusement la norme POSIX n'en précise pas (clairement) la taille :
</p>
<ul><li>si c'est une machine 32 bits, <i>time_t</i> sera vraisemblablement un <a href="Entier_(informatique)" title="Entier (informatique)">entier signé</a> 32 <a href="Bit" title="Bit">bits</a>. Ce compteur permet de gérer une période totale de 2<sup>32</sup> secondes, soit à peu près 136 années. La date la plus reculée est <time class="nowrap" datetime="1901-12-13" data-sort-value="1901-12-13">13 décembre 1901</time>, et la plus avancée est <time class="nowrap" datetime="2038-01-19" data-sort-value="2038-01-19">19 janvier 2038</time>.</li></ul>
<dl><dd>Lorsque cette date la plus avancée sera franchie, cette représentation va déborder <a href="https://en.wikipedia.org/wiki/Arithmetic_overflow" class="extiw external" title="en:Arithmetic overflow"><span class="indicateur-langue" title="Article en anglais : « Arithmetic overflow »">(en)</span></a>, c'est-à-dire qu'elle ne sera plus capable de continuer à représenter l'heure Unix correctement. Ce problème est appelé le <a href="Bug_de_l'an_2038" title="Bug de l'an 2038">bug de l'an 2038</a>. L'image animée ci-contre illustre le phénomène de débordement.</dd></dl>
<table class="wikitable centre" style="text-align:right">
<tbody><tr>
<th scope="col">
</th>
<th scope="col">Heure Unix
</th>
<th scope="col">UTC
</th></tr>
<tr>
<td align="left">date la plus reculée : -2<sup>31</sup></td>
<td>−2 147 483 648</td>
<td>1901-12-13 T 20:45:52
</td></tr>
<tr>
<td align="left">époque Unix : 0</td>
<td>0</td>
<td>1970-01-01 T 00:00:00
</td></tr>
<tr>
<td align="left">date la plus avancée : 2<sup>31</sup>-1</td>
<td>2 147 483 647</td>
<td>2038-01-19 T 03:14:07
</td></tr></tbody></table>
<ul><li>si c'est une machine 64 bits, <i>time t</i> sera vraisemblablement un <a href="Entier_(informatique)" title="Entier (informatique)">entier signé</a> 64 <a href="Bit" title="Bit">bits</a> ; les limites seront alors supérieures à 292 milliards d'années soit beaucoup plus que l'âge de notre planète ou son espérance de vie.</li></ul>
<p>Cette impossibilité de représentation ne met pas forcément en cause le fonctionnement de la machine elle-même, c'est-à-dire le fonctionnement de son <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> mais le fonctionnement de ses applications et son <a href="Interop%C3%A9rabilit%C3%A9" title="Interopérabilité">interopérabilité</a> avec les autres machines. En effet, il n'est pas suffisant qu'une machine sache localement gérer cette limite, mais il faut également que toutes les machines qui lui sont connectées<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> soient capables de gérer cette limite et ce de la même façon.
</p><p>Plusieurs cas peuvent se présenter :
</p>
<ol><li>soit on a affaire à un parc de machines bien maitrisées, c'est le cas par exemple des systèmes embarqués. Dans ce cas, une solution pour gérer cette frontière peut être de s'assurer que le parc de machines n'utilise que des applications développées spécialement pour être robustes face à cette situation<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-Bernstein_23-0" class="reference"><a href="#cite_note-Bernstein-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>,</li>
<li>soit on a affaire à un parc de machines très hétérogènes et non maitrisées, c'est le cas par exemple des machines du monde entier qui sont connectées sur internet. Dans ce cas, une solution serait de généraliser le codage de cette heure Unix sur 64 <a href="Bit" title="Bit">bits</a> à toutes les machines, y compris celles en 32 bits. On peut également raisonnablement espérer que toutes les machines seront au moins 64 bits à l'aube de 2038.</li></ol>
<div class="mw-heading mw-heading3"><h3 id="Utilisation_d'une_résolution_inférieure_à_la_seconde"><span id="Utilisation_d.27une_r.C3.A9solution_inf.C3.A9rieure_.C3.A0_la_seconde"></span>Utilisation d'une résolution inférieure à la seconde</h3></div>
<p>Les systèmes Unix entretiennent en général un compteur dont la résolution est plus fine que la seconde. Cette heure est accessible par un appel à la fonction suivante :
</p>
<pre> int gettimeofday(struct timeval *tv, NULL);</pre>
<p>La valeur numérique retournée par cette fonction est mémorisée dans la variable « <code>struct timeval *tv</code> » définie de la façon suivante :
</p>
<pre> struct timeval {
int tv_sec; /* secondes */
int tv_usec; /* microsecondes de 0 à 999999 */
};</pre>
<p>L'emploi de cette résolution inférieure à une seconde amène la question de savoir ce qui se passe lorsqu'une seconde intercalaire est ajoutée ou retranchée ? Il semblerait que ce point soit à la charge du système d'exploitation<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>. En l'absence de spécification claire, plusieurs scénarios sont donc possibles en fonction du système d'exploitation considéré<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>. Les trois exemples ci-dessous exposent les trois catégories de cas qui semblent les plus représentatives, ils ne traitent que l'aspect insertion d'une seconde intercalaire mais ils pourraient facilement être adaptés au cas de la suppression :
</p>
<ul><li>l'horloge système peut être ajustée brutalement d'une seconde, ce qui donnera l'impression d'un retour en arrière<sup id="cite_ref-effet_d'une_insertion_28-0" class="reference"><a href="#cite_note-effet_d'une_insertion-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.</li></ul>
<table class="wikitable centre" style="text-align:right">
<tbody><tr>
<th>#
</th>
<th scope="col">UTC
</th>
<th scope="col">tv_sec
</th>
<th scope="col">tv_usec
</th>
<th width="300">
</th></tr>
<tr>
<td align="right">4</td>
<td><b>2008-12-31T23:59:60.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td>
</td></tr>
<tr>
<td align="right"></td>
<td><b>2008-12-31T23:59:60.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>500 000</td>
<td>
</td></tr>
<tr bgcolor="#C0C0C0">
<td align="right">5</td>
<td><b>2009-01-01T00:00:00.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td align="left">heure ajustée brutalement
</td></tr>
<tr>
<td align="right"></td>
<td><b>2009-01-01T00:00:00.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>500 000</td>
<td>
</td></tr>
<tr>
<td align="right">6</td>
<td>2009-01-01T00:00:01.000</td>
<td align="right">1 230 768 001</td>
<td>0</td>
<td>
</td></tr></tbody></table>
<div class="clear" style="clear:both;"></div>
<ul><li>l'horloge système peut être maintenue constante pendant une seconde pendant l'insertion de la seconde intercalaire. Cela signifie que l'heure ne reviendra pas en arrière mais sera figée, en conséquence le possible impact sur les applications devrait être en principe moindre<sup id="cite_ref-effet_d'une_insertion_28-1" class="reference"><a href="#cite_note-effet_d'une_insertion-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.</li></ul>
<table class="wikitable centre" style="text-align:right">
<tbody><tr>
<th>#
</th>
<th scope="col">UTC
</th>
<th scope="col">tv_sec
</th>
<th scope="col">tv_usec
</th>
<th width="300">
</th></tr>
<tr>
<td align="right">4</td>
<td><b>2008-12-31T23:59:60.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td>
</td></tr>
<tr>
<td align="right"></td>
<td><b>2008-12-31T23:59:60.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td align="left">heure figée
</td></tr>
<tr bgcolor="#C0C0C0">
<td align="right">5</td>
<td><b>2009-01-01T00:00:00.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td align="left">heure figée
</td></tr>
<tr>
<td align="right"></td>
<td><b>2009-01-01T00:00:00.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>500 000</td>
<td>
</td></tr>
<tr>
<td align="right">6</td>
<td>2009-01-01T00:00:01.000</td>
<td align="right">1 230 768 001</td>
<td>0</td>
<td>
</td></tr></tbody></table>
<div class="clear" style="clear:both;"></div>
<ul><li>l'horloge système peut être ralentie pour compenser l'insertion de la seconde intercalaire<sup id="cite_ref-effet_d'une_insertion_28-2" class="reference"><a href="#cite_note-effet_d'une_insertion-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.</li></ul>
<table class="wikitable centre" style="text-align:right">
<tbody><tr>
<th>#
</th>
<th scope="col">UTC
</th>
<th scope="col">tv_sec
</th>
<th scope="col">tv_usec
</th>
<th width="300">
</th></tr>
<tr>
<td align="right">4</td>
<td><b>2008-12-31T23:59:60.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>0</td>
<td>
</td></tr>
<tr>
<td align="right"></td>
<td><b>2008-12-31T23:59:60.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>250 000</td>
<td align="left">heure ralentie
</td></tr>
<tr bgcolor="#C0C0C0">
<td align="right">5</td>
<td><b>2009-01-01T00:00:00.000</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>500 000</td>
<td align="left">heure ralentie
</td></tr>
<tr>
<td align="right"></td>
<td><b>2009-01-01T00:00:00.500</b></td>
<td align="right"><b>1 230 768 000</b></td>
<td>750 000</td>
<td align="left">heure ralentie
</td></tr>
<tr>
<td align="right">6</td>
<td>2009-01-01T00:00:01.000</td>
<td align="right">1 230 768 001</td>
<td>0</td>
<td>
</td></tr></tbody></table>
<div class="clear" style="clear:both;"></div>
<div class="mw-heading mw-heading3"><h3 id="Utilisation_du_TAI">Utilisation du TAI</h3></div>
<p>L'idée d'utiliser le <a href="Temps_atomique_international" title="Temps atomique international">temps atomique international</a> a été proposée et défendue par de nombreuses personnes<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>, mais ce n'est pas le sens qui a été donné par l'histoire, le choix retenu fut celui qui aujourd'hui est figé par la norme POSIX.
</p><p><a href="Daniel_J._Bernstein" title="Daniel J. Bernstein">Daniel J. Bernstein</a> a écrit des articles et logiciels<sup id="cite_ref-Bernstein_23-1" class="reference"><a href="#cite_note-Bernstein-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> pour l'utilisation de TAI sur des systèmes de type UNIX. Son idée était de faire en sorte que les machines Unix entretiennent en interne une heure <a href="TAI" class="mw-disambig" title="TAI">TAI</a>, c'est-à-dire un nombre exact de secondes écoulées depuis une certaine epoch. C'est un compteur dont le fonctionnement n'est pas perturbé par l'insertion, ou suppression, de secondes intercalaires.
</p>
<ul><li>Ensuite pour afficher l'heure UTC courante, la machine doit utiliser une tables des secondes intercalaires en vigueur à l'instant du calcul. Cette table est mise à jour en local sur la machine, dès la parution des Bulletins de BIPM.</li>
<li>Pour gérer l'affichage des heures UTC ou bien n'importe quel fuseau horaire, il faut sélectionner une section appelée « right » de la base de données appelée « <a href="Tz_database" title="Tz database">TZ_database</a> »<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>.</li></ul>
<p>L'origine de l'heure <a href="TAI" class="mw-disambig" title="TAI">TAI</a> est définie de la façon suivante<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>:
</p>
<ul><li>Le 1<sup>er</sup> janvier 1972 00:00:00 UTC est le 1<sup>er</sup> janvier 1972 00:00:<b><span style="color:blue">10</span></b> TAI.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Synchronisation_des_heures_Unix_et_heure_affichée_par_une_machine_Unix"><span id="Synchronisation_des_heures_Unix_et_heure_affich.C3.A9e_par_une_machine_Unix"></span>Synchronisation des heures Unix et heure affichée par une machine Unix</h3></div>
<p>Depuis le développement du protocole NTP <a href="Network_Time_Protocol" title="Network Time Protocol">Network Time Protocol</a>, à l'exception de quelques cas particuliers, la très grande majorité des machines Unix sont aujourd'hui toutes synchronisées sur une même heure de référence.
</p><p>Il devient alors légitime de se demander si l'heure affichée par une machine Unix est bien l'heure « <b>exacte</b> », ou bien si l'utilisateur doit, à sa charge, ajouter la somme arithmétiques des secondes intercalaires qui ont été insérées, ou retranchées, depuis l'<a href="Epoch" title="Epoch">epoch</a> Unix. La réponse est simple, mais le mot « exact » peut être trompeur:
</p>
<ul><li>l'heure affichée avec la commande « <b>date -u</b> » est « <b>l'heure UTC exacte</b> »,</li>
<li>et dire que l'heure UTC affichée est exacte, revient aussi à dire que le nombre de secondes, calculées à partir de cette heure UTC, c'est-à-dire « l'heure Unix », est différent du nombre « exact » de secondes écoulées depuis l'<a href="Epoch" title="Epoch">epoch</a> Unix. Ce n'est pas un nombre « exact » de secondes. Mais finalement, quelle importance … ?</li></ul>
<p>Une seconde catégorie de question revient régulièrement: « est ce que l'affichage d'une heure locale modifie l'heure Unix de la machine Unix ? ». La réponse est simple:
</p>
<ul><li>l'heure locale affichée est un décalage de l'affichage et non pas un décalage de l'heure Unix de la machine Unix.</li></ul>
<pre>$ (unset TZ ; echo -en 'Date et heure UTC\t: '; date --iso-8601=seconds --utc)
$ (export TZ='Europe/Paris' ; echo -en "Date et heure $TZ\t: "; date --iso-8601=seconds)
$ (export TZ='Canada/Eastern'; echo -en "Date et heure $TZ\t: "; date --iso-8601=seconds)
Date et heure UTC : 2023-09-01T09:04:46+00:00
Date et heure Europe/Paris : 2023-09-01T11:04:46+02:00
Date et heure Canada/Eastern: 2023-09-01T05:04:46-04:00
$ (unset TZ; date --utc '+%s'); (export TZ='Canada/Eastern'; date '+%s')
1693559793
1693559793
</pre>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style="">
</div>
<div class="references-small decimal" style="column-width:36em; column-count:2;"><ol class="references">
<li id="cite_note-marque-1"><span class="mw-cite-backlink"><a href="#cite_ref-marque_1-0">↑</a> </span><span class="reference-text"><a href="POSIX" title="POSIX">POSIX</a> est une marque déposée de « <a href="IEEE" class="mw-redirect" title="IEEE">IEEE</a> » ; <a href="UNIX" class="mw-redirect" title="UNIX">UNIX</a> est une marque déposée du consortium « The Open Group » <a rel="nofollow" class="external free" href="https://www.opengroup.org/">https://www.opengroup.org/</a>.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text">The Unix leap second mess - <a rel="nofollow" class="external free" href="http://www.madore.org/~david/computers/unix-leap-seconds.html">http://www.madore.org/~david/computers/unix-leap-seconds.html</a></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><a href="Seconde_intercalaire#Chronologie_des_modifications_du_temps_universel_coordonné" title="Seconde intercalaire">Seconde_intercalaire#Chronologie_des_modifications_du_temps_universel_coordonné</a></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text">On pourra également consulter <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ucolick.org/~sla/leapsecs/epochtime.html">Epoch time vs. time of day</a> pour une discussion sur certains aspects légaux, et également les autres pages de ce site ; en particulier <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ucolick.org/~sla/leapsecs/deltat.html">Plots of deltas between time scales</a> pour comparer les écarts entre différentes références.</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text">Il ne faudrait pas penser que cette liste est aussi courte, on pourra consulter <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ucolick.org/~sla/leapsecs/timescales.html">Time Scales</a> pour une liste plus exhaustive et précise.</span>
</li>
<li id="cite_note-GMT-6"><span class="reference-text">L’utilisation de l’ancienne appellation standard « temps moyen de Greenwich » (GMT, de l’anglais « Greenwich Mean Time ») est désormais déconseillée parce que sa définition est ambiguë, au contraire d’<a href="Temps_universel_coordonn%C3%A9" title="Temps universel coordonné">UTC</a>, qui doit lui être préférée. Ce sigle s’était imposé par la prépondérance de la marine britannique durant le <abbr class="abbr" title="19ᵉ siècle"><span class="romain">XIX</span><sup style="font-size:72%">e</sup></abbr> siècle et fut plus tard rebaptisé <a href="Temps_universel" title="Temps universel">Temps universel</a> (UT, de l’anglais Universal Time). Comme le temps UTC est le temps civil du méridien origine des longitudes à Greenwich, certains ont tenté de prolonger l’usage de GMT en le traduisant désormais par « Greenwich Meridian Time » mais ce glissement sémantique n’a aucune valeur officielle.</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text">Voir l'article <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a href="https://en.wikipedia.org/wiki/Greenwich_Mean_Time#Greenwich_Mean_Time_in_legislation" class="extiw external" title="en:Greenwich Mean Time">Greenwich Mean Time| l'utilisation de GMT dans la législation</a>.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a> </span><span class="reference-text">Dans l’échelle UTC, les secondes et tous les autres sous-multiples (milliseconde, microseconde, etc.) sont de durée constante, mais la minute et toutes les unités supérieures (heure, jour, semaine, etc.) sont de durée variable. L’ajout ou la suppression de ces secondes intercalaires est rare, de l’ordre d'une seconde sur une à trois années. La plupart des jours UTC comportent 86 400 secondes, la plupart des heures 3 600 secondes, et la plupart des minutes 60 secondes mais certains peuvent comporter respectivement 86 401 <abbr class="abbr" title="seconde">s</abbr> ou bien 86 399 <abbr class="abbr" title="seconde">s</abbr>, 3 601 <abbr class="abbr" title="seconde">s</abbr> ou bien 3 599 <abbr class="abbr" title="seconde">s</abbr> et 61 <abbr class="abbr" title="seconde">s</abbr> ou bien 59 <abbr class="abbr" title="seconde">s</abbr>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text">Si on traçait sur un graphique similaire la différence entre UT1 et TAI, on verrait UT1 et TAI s'éloigner progressivement l'un de l'autre au rythme du ralentissement de la rotation de la Terre ; de même, on verrait UTC et TAI s'éloigner l'un de l'autre par bons successifs au rythme de l'ajout/suppression des secondes intercalaires.</span>
</li>
<li id="cite_note-ajout_suppression-10"><span class="reference-text">Cet ajout (ou suppression) a lieu soit la fin de la dernière minute du dernier jour du mois précédant le <a href="1er_juillet" title="1er juillet"><abbr class="abbr" title="Premier">1<sup>er</sup></abbr> juillet</a> ou le <a href="1er_janvier" title="1er janvier"><abbr class="abbr" title="Premier">1<sup>er</sup></abbr> janvier</a>, exceptionnellement cela peut être le <a href="1er_avril" title="1er avril"><abbr class="abbr" title="Premier">1<sup>er</sup></abbr> avril</a> ou le <a href="1er_octobre" title="1er octobre"><abbr class="abbr" title="Premier">1<sup>er</sup></abbr> octobre</a>, et est annoncé 6 mois à l'avance par l'IERS via son <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.iers.org/MainDisp.csl?pid=44-14">BULLETIN C - Product metadata</a>. En mars 2009, il n’y a jamais eu de suppression de secondes intercalaires, et vraisemblablement il n'y en aura jamais compte tenu du fait que la vitesse de rotation de la terre diminue inexorablement. Il pourra être intéressant de consulter les autres bulletins de l'IERS <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.iers.org/MainDisp.csl?pid=44-14">IERS Bulletins</a>.</span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text">Les secondes intercalaires futures sont prévues avec une anticipation de six mois au maximum, c'est le rythme auquel l'IERS diffuse son bulletin de prévision. Pour les valeurs passées on peut faire usage d’une <a href="Seconde_intercalaire" title="Seconde intercalaire">table</a>.</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a> </span><span class="reference-text">Il y a une difficulté avec cette définition, dans le sens qu'UTC n'existait pas avant 1972 ; cette difficulté est contournée en utilisant des nombres négatifs pour une date antérieure à l'époque ; ainsi 04-10-1957T00:00:00Z, 4 472 jours avant l'époque, est représenté par l'heure POSIX −4 472 × 86 400 = −386 380 800.</span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a> </span><span class="reference-text">Voir <a rel="nofollow" class="external text" href="https://www.usno.navy.mil/USNO/time/master-clock/leap-seconds">Leap Seconds</a>.</span>
</li>
<li id="cite_note-NTP-14"><span class="reference-text">Un PC ne va pas spontanément ralentir/accélérer son compteur interne par lui-même ; l'ajustement peut être fait par l'utilisateur ou bien plus vraisemblablement, s'il est connecté à internet, de façon automatique et quasi-silencieuse par un service d'horloge, généralement il s'agit de <a href="Network_Time_Protocol" title="Network Time Protocol">NTP</a>.</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a> </span><span class="reference-text">Le graphique ci-dessus montre que la période d'insertion d'une seconde intercalaire est entre une et trois années.</span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a> </span><span class="reference-text">Plus le délai est grand et plus l'impact d'une seconde d'erreur est faible et inversement.</span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a> </span><span class="reference-text">Pour que cette dernière méthode soit utilisable à bord d'un système embarqué, cela nécessiterait la mise en œuvre d'une mise à jour automatique et en temps réel de la table.</span>
</li>
<li id="cite_note-année_2000-18"><span class="reference-text">Une années est bissextile si elle est multiple de 4, mais non multiple de 100 sauf si multiple de 400 (exemple, 2000 était bissextile). L’application de cette règle montre qu’il est suffisant de tester la divisibilité par 4 entre 1901 et 2099.</span>
</li>
<li id="cite_note-outils-19"><span class="reference-text">Voir par exemple ce <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.epochconverter.com">Convertisseur secondes / date</a>.</span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a> </span><span class="reference-text">Par exemple, le système d'exploitation Linux continue à fonctionner au-delà de cette date la plus avancée.</span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a> </span><span class="reference-text">Il faut comprendre le mot <i>connecté</i> au sens large, cela concerne la connexion ethernet, mais également l'échange de fichiers via des disques amovibles pour lesquels la datation des fichiers est un point important, pour les sauvegardes par exemple.</span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a> </span><span class="reference-text">On pourra consulter avec intérêt le <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.2038bug.com/developers.html">site web consacré à la dissémination de l'information à propos du bug de l'année 2038</a> qui fournit une solution pour fonctionner jusqu'en 2106, aussi bien sur les machines 32 bits que 64 bits.</span>
</li>
<li id="cite_note-Bernstein-23"><span class="reference-text">On pourra également considérer l'usage du <a href="Temps_atomique_international" title="Temps atomique international">TAI</a> et consulter avec intérêt les articles écrit par <a rel="nofollow" class="external text" href="http://cr.yp.to/djb.html">D. J. Bernstein</a> à ce sujet :
<ul><li><a rel="nofollow" class="external text" href="http://cr.yp.to/proto/utctai.html">UTC, TAI, and UNIX time</a> un article général sur ce sujet,</li>
<li><a rel="nofollow" class="external text" href="http://cr.yp.to/libtai.html">libtai</a> une bibliothèque pour manipuler <a href="Temps_atomique_international" title="Temps atomique international">TAI</a> sur un système de type UNIX,</li>
<li><a rel="nofollow" class="external text" href="http://cr.yp.to/clockspeed.html">clockspeed</a> qui est le plus simple des clients SNTP/NTP.</li></ul>
</span></li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a> </span><span class="reference-text">Voir <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.eecis.udel.edu/~mills/leap.html">The NTP Timescale and Leap Seconds</a>.</span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><a href="#cite_ref-25">↑</a> </span><span class="reference-text">Un article <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.meinberg.de/english/info/leap-second.htm#os">Leap Second Handling by Operating Systems</a> expose 3 cas possibles. Il est dit : <span class="citation">« <i>Linux kernels and most other Unix-like systems care about the leap seconds and handle them correctly.</i> »</span> mais sans réellement préciser ce que <i>correctly</i> signifie au juste.</span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a> </span><span class="reference-text">Voir <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://developers.redhat.com/blog/2015/06/01/five-different-ways-handle-leap-seconds-ntp/">Five different ways to handle leap seconds with NTP</a></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a> </span><span class="reference-text">Depuis 2008, les équipes Google ont développé un algorithme appelé « Leap Smear » dont le but est d'adoucir la transition addition ou retrait d'une seconde intercalaire. Voir <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external autonumber" href="https://developers.google.com/time/smear">[1]</a>, « Google team encourage anyone smearing leap seconds to use a <b>24-hour linear smear from noon to noon UTC</b>. »</span>
</li>
<li id="cite_note-effet_d'une_insertion-28"><span class="reference-text">Comme exemple pour évaluer l'impact de ces différents scénarios, on pourrait imaginer un instrument de mesure de vitesse qui mesure le délai écoulé pour une distance parcourue donnée : dans le <abbr class="abbr" title="Troisième">3<sup>e</sup></abbr> cas, la vitesse sera surestimée, au maximum dans un rapport 2, et dans les deux premiers cas d'un rapport qui pourra être infini. On se rappellera tout de même que la probabilité d'occurrence d'un tel phénomène est rarissime, voir plus haut</span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><a href="#cite_ref-29">↑</a> </span><span class="reference-text">Voir en particulier <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.mail-archive.com/leapsecs@rom.usno.navy.mil/msg00109.html">History of IEEE P1003.1 POSIX time</a> par Landon Curt Noll <a href="https://en.wikipedia.org/wiki/Landon_Curt_Noll" class="extiw external" title="en:Landon Curt Noll"><span class="indicateur-langue" title="Article en anglais : « Landon Curt Noll »">(en)</span></a>.</span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a> </span><span class="reference-text">Sur les machines Unix cette base de données est sauvegardée dans le répertoire « /usr/share/zoneinfo/right/ », alors que habituellement c'est la base « /usr/share/zoneinfo/posix/ » qui est utilisée</span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a> </span><span class="reference-text"><a href="Seconde_intercalaire#Chronologie_des_modifications_du_temps_universel_coordonné" title="Seconde intercalaire">Seconde_intercalaire#Chronologie des modifications du temps universel coordonné</a>:</span>
</li>
</ol>
</div>
<p><br>
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="Seconde_intercalaire" title="Seconde intercalaire">Seconde intercalaire</a></li>
<li><a href="Intercalation_(mesure_du_temps)" title="Intercalation (mesure du temps)">Intercalation (mesure du temps)</a></li>
<li><a href="Network_Time_Protocol" title="Network Time Protocol">Network Time Protocol</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://webtai.bipm.org/database/sitemap.html">BIPM Time Department</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.mail-archive.com/leapsecs@rom.usno.navy.mil/msg00109.html">History of IEEE P1003.1 POSIX time</a> par Landon Curt Noll <a href="https://en.wikipedia.org/wiki/Landon_Curt_Noll" class="extiw external" title="en:Landon Curt Noll"><span class="indicateur-langue" title="Article en anglais : « Landon Curt Noll »">(en)</span></a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="http://www.bdl.fr">Institut de Mécanique Céleste et de Calcul des Ephémérides</a> (Observatoire de Paris - Bureau des longitudes - CNRS)</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.iers.org">International Earth Rotation and Reference Systems Service</a> (IERS)</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ucolick.org/~sla/leapsecs/">The Future of Leap Seconds in UTC</a> par Steve Allen</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://geometrian.com/programming/reference/timestds/">Time Standards Reference</a> par Ian Mallett</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Bibliographie">Bibliographie</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.unix.org/version3/ieee_std.html">The Authorized Guide to Version 3 of the Single UNIX Specification</a> (version librement accessible de IEEE Std 1003.1, 2004 Edition)</li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des sciences</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail du temps</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-05-31" href="https://fr.wikipedia.org/wiki/?title=Heure_Unix&oldid=226123844">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>